/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ccs.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.struts2.ServletActionContext;

/**
 *
 * @author José Irineo Coria Hernández
 */
public class Util {

    /**
     * Método para obtener la ruta actual en tiempo de ejecución.
     * @return Devuelve una cadena con la ruta absoluta de la aplicacion en ejecución
     */
    public static String getPath() {
        return System.getProperty("user.dir");
    }

    /**
     * Método para obtener la ruta completa del proyecto.
     * @return Devuelve una cadena con la ruta absoluta del proyecto
     */
    public static String getRealPath() {
        return ServletActionContext.getServletContext().getRealPath("/");
    }

    /**
     * Método para obtener el context path en un Action de Struts2.
     * @return Devuelve una cadena con el context path.
     */
    public static String getContextPath() {
        return ServletActionContext.getServletContext().getContextPath();
    }

    /**
     * Método que convierte un objeto Date a String.
     * @param fecha es un objeto de java.util.Date
     * @param formato es una cadena que especifica el formato que se desea tenga la fecha .
     * @return una cadena con con la fecha dada en el formato indicado.
     */
    public static String formatearFecha(Date fecha, String formato) {
        SimpleDateFormat sdf = new SimpleDateFormat(formato);
        return sdf.format(fecha);
    }

    /**
     * Método que convierte un String a un objeto Date.
     * @param fecha una cadena con la fecha.
     * @param formato el formato de la fecha dada.
     * @return un objeto de java.util.Date
     * @throws ParseException se lanza cuando no se puede realizar el formateo
     */
    public static Date formatearFecha(String fecha, String formato) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(formato);
        return sdf.parse(fecha);
    }

    /**
     * Método que cambia de <code>java.util.Date</code> a <code>java.sql.Date</code>.
     * @param fecha un objeto de <code>java.util.Date</code>.
     * @return un objeto de <code>java.sql.Date</code>.
     */
    public static java.sql.Date castDate(java.util.Date fecha) {
        return new java.sql.Date(fecha.getTime());
    }

    /**
     * Método que cambia de <code>java.sql.Date</code> a <code>java.util.Date</code>.
     * @param fecha un objeto de <code>java.sql.Date</code>.
     * @return un objeto de <code>java.util.Date</code>.
     */
    public static java.util.Date castDate(java.sql.Date fecha) {
        return new java.util.Date(fecha.getTime());
    }

}
